Functions এবং Methods যেগুলো কখনো Return করবে না

Computer Programming - পিএইচপি (PHP 8) - Never Return Type (PHP 8.1+)
149

PHP Functions এবং Methods যেগুলো কখনো Return করবে না

PHP-তে কিছু functions এবং methods আছে যেগুলো return করে না, অর্থাৎ এগুলোর কোনো return value থাকে না। এই ধরনের functions বা methods সাধারণত কোনো কার্যক্রম সম্পাদন করতে ব্যবহৃত হয়, কিন্তু কোনো ফলাফল বা মান ফেরত দেয় না। PHP 8.1-এ এর জন্য never return type যুক্ত করা হয়েছে, যা স্পষ্টভাবে নির্দেশ করে যে ফাংশনটি কখনো কোনো মান ফিরিয়ে দেবে না।

Never Return Type

PHP 8.1 এ নতুন never টাইপ যুক্ত করা হয়েছে, যা একটি ফাংশন বা মেথডের জন্য ব্যবহৃত হয় যেগুলো কখনো return করবে না। উদাহরণস্বরূপ, একটি ফাংশন যা কোন ত্রুটি ছুঁড়ে দেয় (throw), অথবা একটি ফাংশন যা স্ক্রিপ্ট থামিয়ে দেয় (যেমন exit বা die ব্যবহার করে), তা কখনো কোনো মান ফেরত দেয় না।

never Return Type এর Syntax:

function terminate(): never {
    die("Script terminated");
}

terminate();  // This will stop the script execution and will never return a value

এখানে terminate() ফাংশনটি never return type ব্যবহার করছে, কারণ এটি কখনো কোনো মান ফেরত দেয় না। এটি স্ক্রিপ্টের এক্সিকিউশন থামিয়ে দেয় এবং কোনো রিটার্ন ভ্যালু থাকে না।


ফাংশন এবং মেথড যেগুলো কখনো Return করে না

1. exit() এবং die()

exit() এবং die() PHP ফাংশন দুটি স্ক্রিপ্টের এক্সিকিউশন থামিয়ে দেয় এবং এদের কোনো রিটার্ন ভ্যালু থাকে না। এই ধরনের ফাংশনগুলো never return type এর উদাহরণ।

উদাহরণ:

function terminateExecution(): never {
    exit("Stopping execution!");
}

এখানে, terminateExecution() ফাংশনটি স্ক্রিপ্ট থামিয়ে দেয় এবং কোনো মান ফেরত দেয় না।

2. throw Statement

যখন আপনি একটি exception বা error ছুড়েন (throw), তখন এটি কোনো রিটার্ন মান দেয় না। PHP 8.1 এ, আপনি never return type ব্যবহার করতে পারেন এমন ফাংশনে যেগুলো কোনো ত্রুটি ছুড়ে দেয়।

উদাহরণ:

function checkValue(int $value): never {
    if ($value <= 0) {
        throw new InvalidArgumentException("Value must be positive");
    }
}

এখানে, checkValue() ফাংশনটি একটি InvalidArgumentException ছুড়ে দেয় যখন $value 0 বা তার চেয়ে ছোট হয়। এই ফাংশনটি কখনো কোনো মান ফেরত দেয় না, শুধুমাত্র একটি exception ছুড়ে দেয়।

3. Infinite Loops

কিছু ফাংশন বা মেথড যেগুলি infinite loops চালায়, কখনো return করবে না, কারণ তারা কোনো শেষ পয়েন্টে পৌঁছায় না। যেমন, একটি সন্নিবিষ্ট লুপ যা একে অপরকে পুনরাবৃত্তি করতে থাকে।

উদাহরণ:

function infiniteLoop(): never {
    while (true) {
        // Endless loop
    }
}

এখানে, infiniteLoop() ফাংশনটি কখনো return করবে না কারণ এটি একটি অনন্ত লুপ চালায়।

4. register_shutdown_function()

এই ফাংশনটি স্ক্রিপ্টের শেষের দিকে একটি ফাংশন রেজিস্টার করতে ব্যবহৃত হয়, যা সাধারণত স্ক্রিপ্টের এক্সিকিউশন শেষ হওয়ার পর চলে। এটি কোনো রিটার্ন ভ্যালু প্রদান করে না, বরং স্ক্রিপ্টের শেষের দিকে কার্যকর হয়।

উদাহরণ:

register_shutdown_function(function() {
    echo "Shutdown function executed!";
});

এখানে, register_shutdown_function() কোনো রিটার্ন ভ্যালু প্রদান করে না। এটি স্ক্রিপ্ট শেষ হলে কার্যকর হয় এবং কোনো মান ফেরত দেয় না।


never Return Type এর গুরুত্ব

PHP 8.1-এ never টাইপটি ব্যবহার করার মাধ্যমে কোডের পঠনযোগ্যতা ও স্পষ্টতা বৃদ্ধি পায়। এটি ফাংশন বা মেথডের উদ্দেশ্য স্পষ্টভাবে জানিয়ে দেয় যে, এই ফাংশন বা মেথড কখনো কোনো রিটার্ন ভ্যালু দিবে না, যা কোড লেখার সময় একটি নির্দিষ্ট ডকুমেন্টেশন হিসেবে কাজ করে।

never Return Type এর সুবিধা:

  1. পঠনযোগ্যতা বৃদ্ধি: never টাইপ ব্যবহার করলে, কোডের উদ্দেশ্য পরিষ্কার হয় এবং প্রোগ্রামারের জন্য এটি পড়া সহজ হয়।
  2. টাইপ সেফটি: যখন আপনি never টাইপ ব্যবহার করেন, তখন কোডের কোনো অংশে ভুলভাবে রিটার্ন ভ্যালু অ্যাসাইন করা হবে না।
  3. সঠিক ত্রুটি নির্দেশনা: ফাংশন বা মেথডের শেষে কোনো ধরনের রিটার্ন ভ্যালু ফেরত না দেওয়া এবং স্ক্রিপ্ট থামিয়ে দেওয়া বা ত্রুটি ছুড়ে দেওয়ার মাধ্যমে অ্যাপ্লিকেশন আরো সঠিকভাবে পরিচালিত হয়।

উপসংহার

PHP 8.1-এ never return type ফিচারটি ব্যবহার করে আপনি স্পষ্টভাবে জানাতে পারেন যে, কোনো ফাংশন বা মেথড কখনো রিটার্ন মান ফেরত দেবে না। এটি স্ক্রিপ্ট থামিয়ে দেয়, exception ছুড়ে দেয়, অথবা infinite loop চলিয়ে যায়, এমন কোডের জন্য অত্যন্ত উপযোগী। এটি কোডের সঠিকতা ও নিরাপত্তা নিশ্চিত করতে এবং প্রোগ্রামিংয়ের সময় ভুলগুলি কমাতে সাহায্য করে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...